package middleware

import (
	"log"
	"my-yipuku/controllers"
	"my-yipuku/utils"
	"time"

	"github.com/gin-gonic/gin"
)

/**
 * 登陆鉴权中间件
 */
func LoginAuth() gin.HandlerFunc {
	return func(c *gin.Context) {
		token := c.Request.Header.Get("Authorization")
		if token == "" {
			controllers.ReturnError(c, -200, "Token is empty")
			return
		}
		// 验证token是否正常
		user, rCode := utils.CheckToken(token)
		if rCode != nil {
			controllers.ReturnError(c, -200, "Token is Error")
			return
		}
		// 判断token是否过期
		if time.Now().Unix() > user.ExpiresAt {
			controllers.ReturnError(c, -200, "Token is expires")
			return
		}
		// 从token中解析出来的数据挂载到上下文上,方便后面的控制器使用
		log.Print("auth=========", user.ID)
		c.Set("user", user)
		c.Next()
	}
}
